This invention relates generally to computer memory, and more specifically, to techniques for writing to multi-level analog computer memory.
Memory technologies, such as flash memory and phase change memory (PCM), can have relatively long programming times relative to their respective read times. Flash memory may modulate a charge stored within a gate of a metal-oxide-semiconductor (MOS) transistor to shift the transistor's threshold voltage higher or lower per memory cell. PCM may use the different electrical characteristics of crystalline and amorphous states of chalcogenide material to store different data states per memory cell. Storing multiple bits per memory cell can present additional challenges to ensure accuracy of the stored data. For example, the application of a programming signal two times to the same PCM cell or to two different PCM cells does not necessarily lead to the same resistance values in the two cases. As a further example, PCM cell resistance values can change after programming, usually increasing with time. The meaning of a read resistance value therefore may change with time. Using a basic write-and-verify approach to memory programming which includes a sequence of write and read operations as a feedback mechanism can reduce errors in the writing process.
The amount of uncertainty in the outcome of a programming signal may differ for different programming signals. For example, in a PCM having a logarithmic resistance scale, it is often the case that the distribution of the log resistance for the SET (near crystalline) state in PCM has a smaller standard deviation than the distribution of the log resistance of the RESET (near amorphous) state in PCM. Similarly, a programming signal that makes the PCM cell have a log resistance somewhere in between the log resistances of the SET and RESET values is sometimes associated with a log resistance distribution that has a bigger standard deviation than that associated with the SET or RESET log resistance distributions.